home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / text / html / parser / ContentModelState.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  2.6 KB  |  200 lines

  1. package javax.swing.text.html.parser;
  2.  
  3. class ContentModelState {
  4.    ContentModel model;
  5.    long value;
  6.    ContentModelState next;
  7.  
  8.    ContentModelState(Object var1, ContentModelState var2) {
  9.       this(var1, var2, 0L);
  10.    }
  11.  
  12.    ContentModelState(Object var1, ContentModelState var2, long var3) {
  13.       this.model = (ContentModel)var1;
  14.       this.next = var2;
  15.       this.value = var3;
  16.    }
  17.  
  18.    public ContentModelState(ContentModel var1) {
  19.       this(var1, (ContentModelState)null, 0L);
  20.    }
  21.  
  22.    public ContentModelState advance(Object var1) {
  23.       switch (this.model.type) {
  24.          case 38:
  25.             ContentModel var6 = (ContentModel)this.model.content;
  26.             boolean var7 = true;
  27.  
  28.             for(int var4 = 0; var6 != null; var6 = var6.next) {
  29.                if ((this.value & 1L << var4) == 0L) {
  30.                   if (var6.first(var1)) {
  31.                      return (new ContentModelState(var6, new ContentModelState(this.model, this.next, this.value | 1L << var4))).advance(var1);
  32.                   }
  33.  
  34.                   if (!var6.empty()) {
  35.                      var7 = false;
  36.                   }
  37.                }
  38.  
  39.                ++var4;
  40.             }
  41.  
  42.             if (var7) {
  43.                if (this.next != null) {
  44.                   return this.next.advance(var1);
  45.                }
  46.  
  47.                return null;
  48.             }
  49.             break;
  50.          case 42:
  51.             if (this.model.first(var1)) {
  52.                return (new ContentModelState(this.model.content, this)).advance(var1);
  53.             }
  54.  
  55.             if (this.next != null) {
  56.                return this.next.advance(var1);
  57.             }
  58.  
  59.             return null;
  60.          case 43:
  61.             if (this.model.first(var1)) {
  62.                return (new ContentModelState(this.model.content, new ContentModelState(this.model, this.next, this.value + 1L))).advance(var1);
  63.             }
  64.  
  65.             if (this.value != 0L) {
  66.                if (this.next != null) {
  67.                   return this.next.advance(var1);
  68.                }
  69.  
  70.                return null;
  71.             }
  72.             break;
  73.          case 44:
  74.             ContentModel var5 = (ContentModel)this.model.content;
  75.  
  76.             for(int var3 = 0; (long)var3 < this.value; var5 = var5.next) {
  77.                ++var3;
  78.             }
  79.  
  80.             if (var5.first(var1) || var5.empty()) {
  81.                if (var5.next == null) {
  82.                   return (new ContentModelState(var5, this.next)).advance(var1);
  83.                }
  84.  
  85.                return (new ContentModelState(var5, new ContentModelState(this.model, this.next, this.value + 1L))).advance(var1);
  86.             }
  87.             break;
  88.          case 63:
  89.             if (this.model.first(var1)) {
  90.                return (new ContentModelState(this.model.content, this.next)).advance(var1);
  91.             }
  92.  
  93.             if (this.next != null) {
  94.                return this.next.advance(var1);
  95.             }
  96.  
  97.             return null;
  98.          case 124:
  99.             for(ContentModel var2 = (ContentModel)this.model.content; var2 != null; var2 = var2.next) {
  100.                if (var2.first(var1)) {
  101.                   return (new ContentModelState(var2, this.next)).advance(var1);
  102.                }
  103.             }
  104.             break;
  105.          default:
  106.             if (this.model.content == var1) {
  107.                return this.next;
  108.             }
  109.       }
  110.  
  111.       return null;
  112.    }
  113.  
  114.    public Element first() {
  115.       switch (this.model.type) {
  116.          case 38:
  117.          case 42:
  118.          case 63:
  119.          case 124:
  120.             return null;
  121.          case 43:
  122.             return this.model.first();
  123.          case 44:
  124.             ContentModel var1 = (ContentModel)this.model.content;
  125.  
  126.             for(int var2 = 0; (long)var2 < this.value; var1 = var1.next) {
  127.                ++var2;
  128.             }
  129.  
  130.             return var1.first();
  131.          default:
  132.             return this.model.first();
  133.       }
  134.    }
  135.  
  136.    public ContentModel getModel() {
  137.       ContentModel var1 = this.model;
  138.  
  139.       for(int var2 = 0; (long)var2 < this.value; ++var2) {
  140.          if (var1.next == null) {
  141.             return null;
  142.          }
  143.  
  144.          var1 = var1.next;
  145.       }
  146.  
  147.       return var1;
  148.    }
  149.  
  150.    public boolean terminate() {
  151.       switch (this.model.type) {
  152.          case 38:
  153.             ContentModel var4 = (ContentModel)this.model.content;
  154.  
  155.             for(int var5 = 0; var4 != null; var4 = var4.next) {
  156.                if ((this.value & 1L << var5) == 0L && !var4.empty()) {
  157.                   return false;
  158.                }
  159.  
  160.                ++var5;
  161.             }
  162.  
  163.             return this.next == null || this.next.terminate();
  164.          case 43:
  165.             if (this.value == 0L && !this.model.empty()) {
  166.                return false;
  167.             }
  168.          case 42:
  169.          case 63:
  170.             return this.next == null || this.next.terminate();
  171.          case 44:
  172.             ContentModel var3 = (ContentModel)this.model.content;
  173.  
  174.             for(int var2 = 0; (long)var2 < this.value; var3 = var3.next) {
  175.                ++var2;
  176.             }
  177.  
  178.             while(var3 != null && var3.empty()) {
  179.                var3 = var3.next;
  180.             }
  181.  
  182.             if (var3 != null) {
  183.                return false;
  184.             }
  185.  
  186.             return this.next == null || this.next.terminate();
  187.          case 124:
  188.             for(ContentModel var1 = (ContentModel)this.model.content; var1 != null; var1 = var1.next) {
  189.                if (var1.empty()) {
  190.                   return this.next == null || this.next.terminate();
  191.                }
  192.             }
  193.  
  194.             return false;
  195.          default:
  196.             return false;
  197.       }
  198.    }
  199. }
  200.